์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ํด๊ฒฐํ๊ธฐ ์ํ ๋ชจ๋ํฐ๋ง ํ๋ ์์ํฌ๋ฅผ ๊ฐ์ถ ๊ฒฌ๊ณ ํ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ๋ถ์ ์ธํ๋ผ ๊ตฌ์ถ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ๋ถ์ ์ธํ๋ผ: ๋ชจ๋ํฐ๋ง ํ๋ ์์ํฌ ๊ตฌํ
์ค๋๋ ๋น ๋ฅด๊ฒ ๋ณํํ๋ ๋์งํธ ํ๊ฒฝ์์, ์ํํ๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ ๋ชจ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๊ณต์ ์์ด ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ๋๋ฆฐ ๋ก๋ฉ ์๊ฐ, ๊ตผ๋ฌ ์ํธ์์ฉ, ์๊ธฐ์น ์์ ์ค๋ฅ๋ ์ฌ์ฉ์์ ๋ถ๋ง, ์ธ์ ์ดํ๋ก ์ด์ด์ ธ ๊ถ๊ทน์ ์ผ๋ก ๋น์ฆ๋์ค ์ฑ๊ณผ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์ต์ ์ ์ฑ๋ฅ์ ๋ณด์ฅํ๊ธฐ ์ํด์๋ ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง, ํต์ฐฐ๋ ฅ ์๋ ์ง๋จ, ๊ทธ๋ฆฌ๊ณ ๊ฐ์ ์ ์ํ ์คํ ๊ฐ๋ฅํ ๊ถ์ฅ ์ฌํญ์ ์ ๊ณตํ๋ ๊ฒฌ๊ณ ํ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ๋ถ์ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ๋ถ์ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํด์ผ ํ๋๊ฐ?
์ ์ค๊ณ๋ ์ฑ๋ฅ ๋ถ์ ์ธํ๋ผ๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ฃผ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ์ ์ ์ ์ธ ๋ฌธ์ ๊ฐ์ง: ์ฌ์ฉ์๊ฐ ์ํฅ์ ๋ฐ๊ธฐ ์ ์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ์ฌ ์๊ธฐ์ ์ ํ ๊ฐ์ ๊ณผ ํด๊ฒฐ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ๋ฐ์ดํฐ ๊ธฐ๋ฐ ์ต์ ํ: ์ฑ๋ฅ ๋ฌธ์ ์ ๊ทผ๋ณธ ์์ธ์ ๋ํ ํต์ฐฐ๋ ฅ์ ์ป์ด ๋ชฉํ ์งํฅ์ ์ธ ์ต์ ํ ๋ ธ๋ ฅ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ์ง์์ ์ธ ๊ฐ์ : ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ์ถ์ ํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ ์ํฅ์ ์ธก์ ํ๊ณ ์ง์์ ์ธ ์ต์ ํ๋ฅผ ๋ณด์ฅํฉ๋๋ค.
- ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ: ๋ ๋น ๋ฅด๊ณ , ๋ ๋ฐ์์ฑ์ด ์ข์ผ๋ฉฐ, ๋ ์์ ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ณตํ์ฌ ์ฌ์ฉ์ ๋ง์กฑ๋์ ์ฐธ์ฌ๋๋ฅผ ๋์ ๋๋ค.
- ๊ฐ์ ๋ ๋น์ฆ๋์ค ์ฑ๊ณผ: ์ดํ๋ฅ ์ ์ค์ด๊ณ , ์ ํ์จ์ ๋์ด๋ฉฐ, ๋ธ๋๋ ํํ์ ํฅ์์ํต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ๋ถ์ ์ธํ๋ผ์ ํต์ฌ ๊ตฌ์ฑ ์์
ํฌ๊ด์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ๋ถ์ ์ธํ๋ผ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์ฑ ์์๋ก ์ด๋ฃจ์ด์ง๋๋ค:- ์ค์ ์ฌ์ฉ์ ๋ชจ๋ํฐ๋ง (RUM): ์ค์ ์ฌ์ฉ์์ ํ์ค์ ์ธ ํ๊ฒฝ์์ ์ฑ๋ฅ ๋ฐ์ดํฐ๋ฅผ ์์งํ์ฌ ์ฌ์ฉ์ ๊ฒฝํ์ ์ง์ ์ผ๋ก ๋ฐ์ํฉ๋๋ค.
- ํฉ์ฑ ๋ชจ๋ํฐ๋ง: ์ฌ์ฉ์ ์ํธ์์ฉ์ ์๋ฎฌ๋ ์ด์ ํ์ฌ ํต์ ๋ ํ๊ฒฝ์์ ์ ์ ์ ์ผ๋ก ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์๋ณํฉ๋๋ค.
- ์ฑ๋ฅ ํ ์คํธ: ๋ค์ํ ๋ถํ ์กฐ๊ฑด์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํ๊ฐํ์ฌ ํ์ฅ์ฑ ๋ณ๋ชฉ ํ์์ ์๋ณํฉ๋๋ค.
- ๋ก๊น ๋ฐ ์ค๋ฅ ์ถ์ : ์ค๋ฅ ๋ฐ ์ฑ๋ฅ ์ด๋ฒคํธ์ ๋ํ ์์ธ ์ ๋ณด๋ฅผ ๊ธฐ๋กํ์ฌ ๊ทผ๋ณธ ์์ธ ๋ถ์์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ๋ชจ๋ํฐ๋ง ํ๋ ์์ํฌ: ์ฑ๋ฅ ๋ฐ์ดํฐ๋ฅผ ์์ง, ์ฒ๋ฆฌ ๋ฐ ์๊ฐํํ๊ธฐ ์ํ ์ค์ ์ง์ค์ ํ๋ซํผ์ ๋๋ค.
- ์๋ฆผ ๋ฐ ํต์ง: ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ด ์ฌ์ ์ ์ ์๋ ์๊ณ๊ฐ์ ์ด๊ณผํ ๋ ์๋ฆผ์ ๋ฐ์์ํต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋ํฐ๋ง ํ๋ ์์ํฌ ๊ตฌํํ๊ธฐ
์ด ์น์ ์์๋ ์ฑ๋ฅ ๋ถ์ ์ธํ๋ผ์ ๋ค๋ฅธ ๊ตฌ์ฑ ์์์ ํตํฉ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋ํฐ๋ง ํ๋ ์์ํฌ ๊ตฌํ์ ์ค์ ์ ๋ก๋๋ค. ์ด ํ๋ ์์ํฌ๋ ์ฑ๋ฅ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ , ์ง๊ณํ๋ฉฐ, ๋ถ์ ๋ฐ ์๊ฐํ๋ฅผ ์ํด ์ค์ ๋ชจ๋ํฐ๋ง ์๋ฒ๋ก ์ ์กํ๋ ์ญํ ์ ๋ด๋นํฉ๋๋ค.
1. ์ฑ๋ฅ ๋ฉํธ๋ฆญ ์ ์ํ๊ธฐ
์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ๋ชจ๋ํฐ๋งํ ํต์ฌ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ์ ์ํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ๋ฉํธ๋ฆญ์ ๋น์ฆ๋์ค ๋ชฉํ ๋ฐ ์ฌ์ฉ์ ๊ฒฝํ ์๊ตฌ์ฌํญ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํ์ด์ง ๋ก๋ ์๊ฐ: ์น ํ์ด์ง๊ฐ ์์ ํ ๋ก๋๋๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋๋ค. ์ด๋ TTFB(Time to First Byte), FCP(First Contentful Paint), LCP(Largest Contentful Paint)์ ๊ฐ์ ๋ฉํธ๋ฆญ์ผ๋ก ๋ ์ธ๋ถํ๋ ์ ์์ต๋๋ค.
- ์ํธ์์ฉ๊น์ง์ ์๊ฐ (TTI): ์น ํ์ด์ง๊ฐ ์์ ํ ์ํธ์์ฉ ๊ฐ๋ฅํ๊ณ ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ฐ์ํ๊ฒ ๋๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ ์คํ ์๊ฐ: ํ์ฑ, ์ปดํ์ผ, ์คํ์ ํฌํจํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์คํํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋: ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๊ฐ ์๋นํ๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ ๋๋ค.
- CPU ์ฌ์ฉ๋: ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๊ฐ ์๋นํ๋ CPU ๋ฆฌ์์ค์ ์์ ๋๋ค.
- ์ค๋ฅ์จ: ๋ฐ์ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ค๋ฅ์ ์์ ๋๋ค.
- ์์ฒญ ์ง์ฐ ์๊ฐ: HTTP ์์ฒญ์ด ์๋ฃ๋๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋๋ค.
- ์ฌ์ฉ์ ์ ์ ๋ฉํธ๋ฆญ: ํน์ ๊ธฐ๋ฅ์ ์ฑ๋ฅ์ ๋ํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ณ ๋ฉํธ๋ฆญ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ณต์กํ ๊ณ์ฐ์ ์ง์ ์๊ฐ, ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ ๋๋งํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ ๋๋ ์ด๋น API ํธ์ถ ์ ๋ฑ์ด ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๊ธ๋ก๋ฒ ์ด์ปค๋จธ์ค ์น์ฌ์ดํธ๋ '์ฅ๋ฐ๊ตฌ๋ ๋ด๊ธฐ' ๋ฒํผ ํด๋ฆญ ์ง์ฐ ์๊ฐ์ ์ฌ์ฉ์ ์ ์ ๋ฉํธ๋ฆญ์ผ๋ก ์ถ์ ํ ์ ์์ต๋๋ค. ์ด ์์ ์ ์ง์ฐ์ ํ๋งค ์ ํ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ ๋๋ค.
2. ๋ชจ๋ํฐ๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ๋๊ตฌ ์ ํํ๊ธฐ
์คํ ์์ค์ ์์ฉ์ ํฌํจํ์ฌ ์ฌ๋ฌ ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋ํฐ๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ธ๊ธฐ ์๋ ๋ช ๊ฐ์ง ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- window.performance API: ์น ํ์ด์ง ๋ก๋ฉ ๋ฐ ์คํ์ ๋ํ ์์ธํ ์ฑ๋ฅ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๋ด์ฅ ๋ธ๋ผ์ฐ์ API์ ๋๋ค.
- PerformanceObserver API: ์ฑ๋ฅ ์ด๋ฒคํธ๋ฅผ ๊ตฌ๋ ํ๊ณ ํน์ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ์ฌ์ฉํ ์ ์์ ๋ ์๋ฆผ์ ๋ฐ์ ์ ์์ต๋๋ค.
- Google Analytics: ํ์ด์ง ๋ก๋ ์๊ฐ ๋ฐ ๊ธฐํ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ์ถ์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์น ๋ถ์ ํ๋ซํผ์ ๋๋ค.
- New Relic Browser: ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ์ ๋ํ ์์ธํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ๋ ํฌ๊ด์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง(APM) ์๋ฃจ์ ์ ๋๋ค.
- Sentry: ์ค๋ฅ ๋ฐ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋๋ ์ค๋ฅ ์ถ์ ๋ฐ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ํ๋ซํผ์ ๋๋ค.
- Rollbar: Sentry์ ์ ์ฌํ ํ๋ซํผ์ผ๋ก, ์ค๋ฅ ์ถ์ ์ ์ค์ ์ ๋๊ณ ๋๋ฒ๊น ์ ๋๊ธฐ ์ํ ๋ฌธ๋งฅ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- Prometheus & Grafana: ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ Prometheus๋ก ๋ด๋ณด๋ด๊ณ Grafana์์ ์๊ฐํํ์ฌ ๋ชจ๋ํฐ๋งํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ธ๊ธฐ ์๋ ์คํ ์์ค ๋ชจ๋ํฐ๋ง ์๋ฃจ์ ์ ๋๋ค. ๋ ๋ง์ ์ค์ ์ด ํ์ํ์ง๋ง ๋์ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค.
๋ชจ๋ํฐ๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ๋๊ตฌ์ ์ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์๊ตฌ์ฌํญ, ์์ฐ ๋ฐ ๋ค๋ฅธ ๋๊ตฌ์์ ํตํฉ ์์ค์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
๊ธ๋ก๋ฒ ๋ด์ค ๊ธฐ๊ด์ ๊ฒฝ์ฐ, ํ๋ ๋ด์ค ์น์ฌ์ดํธ์์ SPA(๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ )๊ฐ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๊ฒ์ ๊ณ ๋ คํ ๋, SPA๋ฅผ ๊ฐ๋ ฅํ๊ฒ ์ง์ํ๋ ๋ชจ๋ํฐ๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ํํ๋ ๊ฒ์ด ํ์์ ์ผ ๊ฒ์ ๋๋ค.
3. ๋ชจ๋ํฐ๋ง ํ๋ ์์ํฌ ๊ตฌํํ๊ธฐ
๋ชจ๋ํฐ๋ง ํ๋ ์์ํฌ์ ๊ตฌํ์ ๋ค์ ๋จ๊ณ๋ฅผ ํฌํจํฉ๋๋ค:
- ๋ชจ๋ํฐ๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๊ธฐํ: ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์์ ์ ํํ ๋ชจ๋ํฐ๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ๋๊ตฌ๋ฅผ ๋ก๋ํ๊ณ ์ด๊ธฐํํฉ๋๋ค. ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ํ์ํ API ํค์ ์ค์ ์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ์์ ์ ํฌํจํฉ๋๋ค.
- ์ฑ๋ฅ ๋ฉํธ๋ฆญ ์์ง: ๋ชจ๋ํฐ๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์๋ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ์์งํฉ๋๋ค. ์ด๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋, ํ์ด๋จธ ๋ฐ ๊ธฐํ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ๊ธฐ์ ๋ก ์ฝ๋๋ฅผ ๊ณ์ธกํ์ฌ ์ํํ ์ ์์ต๋๋ค.
- ์ฑ๋ฅ ๋ฐ์ดํฐ ์ง๊ณ: ์์ง๋ ์ฑ๋ฅ ๋ฐ์ดํฐ๋ฅผ ์ง๊ณํ์ฌ ํ๊ท , ๋ฐฑ๋ถ์์ ๋ฐ ๊ธฐํ ํต๊ณ์ ์ธก์ ์ ๊ณ์ฐํฉ๋๋ค. ์ด๋ ํด๋ผ์ด์ธํธ ์ธก ๋๋ ์๋ฒ ์ธก์์ ์ํํ ์ ์์ต๋๋ค.
- ๋ชจ๋ํฐ๋ง ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์ก: ์ง๊ณ๋ ์ฑ๋ฅ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ ๋ฐ ์๊ฐํ๋ฅผ ์ํด ์ค์ ๋ชจ๋ํฐ๋ง ์๋ฒ๋ก ์ ์กํฉ๋๋ค. ์ด๋ HTTP ์์ฒญ ๋๋ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ ์ก ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์ํํ ์ ์์ต๋๋ค.
- ์ค๋ฅ ์ฒ๋ฆฌ: ์์ธ๋ฅผ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ๋ชจ๋ํฐ๋ง ํ๋ ์์ํฌ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๋จ์ํค๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ์ ํ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํฉ๋๋ค.
์์ : `window.performance` API ์ฌ์ฉํ๊ธฐ
`window.performance` API๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด์ง ๋ก๋ ์๊ฐ ๋ฉํธ๋ฆญ์ ์์งํ๋ ๊ฐ๋จํ ์์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
function trackPageLoadTime() {
if (window.performance) {
const timing = window.performance.timing;
const pageLoadTime = timing.loadEventEnd - timing.navigationStart;
// ํ์ด์ง ๋ก๋ ์๊ฐ์ ๋ชจ๋ํฐ๋ง ์๋ฒ๋ก ์ ์ก
sendDataToServer({
metric: 'pageLoadTime',
value: pageLoadTime
});
}
}
window.onload = trackPageLoadTime;
function sendDataToServer(data) {
// ์ค์ ๋ฐ์ดํฐ ์ ์ก ๋ก์ง์ผ๋ก ๊ต์ฒด (์: fetch ๋๋ XMLHttpRequest ์ฌ์ฉ)
console.log('Sending data to server:', data);
fetch('/api/metrics', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
}).then(response => {
if (!response.ok) {
console.error('Failed to send data to server');
}
}).catch(error => {
console.error('Error sending data to server:', error);
});
}
์์ : `PerformanceObserver` API ์ฌ์ฉํ๊ธฐ
๋ค์์ `PerformanceObserver` API๋ฅผ ์ฌ์ฉํ์ฌ ์ต๋ ์ฝํ ์ธ ํ ํ์ธํธ(LCP)๋ฅผ ์ถ์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค:
const observer = new PerformanceObserver((list) => {
for (const entry of list.getEntries()) {
console.log('LCP:', entry.startTime, entry.size, entry.url);
// LCP ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ํฐ๋ง ์๋น์ค๋ก ์ ์ก
sendDataToServer({
metric: 'largestContentfulPaint',
value: entry.startTime,
size: entry.size,
url: entry.url
});
}
});
observer.observe({ type: "largest-contentful-paint", buffered: true });
4. ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ์๊ฐํ
์์ง๋ ์ฑ๋ฅ ๋ฐ์ดํฐ๋ ์๋ฏธ ์๋ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ๊ธฐ ์ํด ์ฒ๋ฆฌ๋๊ณ ์๊ฐํ๋์ด์ผ ํฉ๋๋ค. ์ด๋ ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ํํ ์ ์์ต๋๋ค:
- Grafana: ์ธ๊ธฐ ์๋ ์คํ ์์ค ๋ฐ์ดํฐ ์๊ฐํ ๋ฐ ๋ชจ๋ํฐ๋ง ํ๋ซํผ์ ๋๋ค.
- Kibana: Elastic Stack(ELK)์ ์ผ๋ถ์ธ ๋ฐ์ดํฐ ์๊ฐํ ๋ฐ ํ์ ๋๊ตฌ์ ๋๋ค.
- Tableau: ๋น์ฆ๋์ค ์ธํ ๋ฆฌ์ ์ค ๋ฐ ๋ฐ์ดํฐ ์๊ฐํ ํ๋ซํผ์ ๋๋ค.
- ์ฌ์ฉ์ ์ ์ ๋์๋ณด๋: Chart.js ๋๋ D3.js์ ๊ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฐจํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ ์ ๋์๋ณด๋๋ฅผ ๊ตฌ์ถํฉ๋๋ค.
๋ฐ์ดํฐ๋ ์ดํดํ๊ธฐ ์ฝ๊ณ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ ์ํ๊ฒ ์๋ณํ ์ ์๋ ๋ฐฉ์์ผ๋ก ์๊ฐํ๋์ด์ผ ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์๊ฐํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์๊ณ์ด ๊ทธ๋ํ: ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ํ์ํ์ฌ ์ถ์ธ์ ์ด์ ์งํ๋ฅผ ์๋ณํฉ๋๋ค.
- ํ์คํ ๊ทธ๋จ: ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ๋ถํฌ๋ฅผ ํ์ํ์ฌ ์ด์์น๋ฅผ ์๋ณํฉ๋๋ค.
- ํํธ๋งต: ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ๋ถ๋ถ์ ์ฑ๋ฅ์ ํ์ํ์ฌ ํซ์คํ์ ์๋ณํฉ๋๋ค.
- ์ง๋ฆฌ์ ์ง๋: ๋ค๋ฅธ ์ง๋ฆฌ์ ์ง์ญ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํ์ํ์ฌ ์ง์ญ์ ๋ฌธ์ ๋ฅผ ์๋ณํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ธ๋ก๋ฒ ๋ฐฐ์ก ์๋น์ค๋ ๊ตญ๊ฐ๋ณ ๋ฐฐ์ก ์ง์ฐ ์๊ฐ์ ์๊ฐํํ์ฌ ๋คํธ์ํฌ ์ฐ๊ฒฐ ๋ฌธ์ ๊ฐ ์๋ ์ง์ญ์ ์๋ณํ ์ ์์ต๋๋ค.
5. ์๋ฆผ ๋ฐ ํต์ง
๋ชจ๋ํฐ๋ง ํ๋ ์์ํฌ๋ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ด ์ฌ์ ์ ์ ์๋ ์๊ณ๊ฐ์ ์ด๊ณผํ ๋ ์๋ฆผ์ ๋ฐ์์ํค๋๋ก ๊ตฌ์ฑ๋์ด์ผ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ ์ ์ ์ผ๋ก ์๋ณํ๊ณ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์๋ฆผ์ ์ด๋ฉ์ผ, SMS ๋๋ ๋ค๋ฅธ ์๋ฆผ ์ฑ๋์ ํตํด ์ ์ก๋ ์ ์์ต๋๋ค. ์๋ฆผ์๋ ์๊ณ๊ฐ์ ์ด๊ณผํ ๋ฉํธ๋ฆญ, ์ด๋ฒคํธ ์๊ฐ, ์ํฅ์ ๋ฐ๋ ์ฌ์ฉ์ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ฐ์ ์ฑ๋ฅ ๋ฌธ์ ์ ๋ํ ๊ด๋ จ ์ ๋ณด๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค.
์: ์ ๋ฝ ์ฌ์ฉ์์ ํ๊ท ํ์ด์ง ๋ก๋ ์๊ฐ์ด 3์ด๋ฅผ ์ด๊ณผํ๋ ๊ฒฝ์ฐ ์๋ฆผ์ ์ค์ ํ์ฌ ํด๋น ์ง์ญ์ ์ ์ฌ์ ์ธ CDN ๋ฌธ์ ๋ฅผ ๋ํ๋ด๋๋ก ํฉ๋๋ค.
6. ์ง์์ ์ธ ๊ฐ์
์ฑ๋ฅ ๋ถ์ ์ธํ๋ผ๋ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋ง๋๊ณ ๊ฐ์ ๋์ด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- ์ฑ๋ฅ ๋ฉํธ๋ฆญ ๋ฐ ์๋ฆผ์ ์ ๊ธฐ์ ์ผ๋ก ๊ฒํ ํฉ๋๋ค.
- ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ํด๊ฒฐํฉ๋๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ ์์ฐ์ ์ต์ ํํฉ๋๋ค.
- ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๋ฉํธ๋ฆญ์ผ๋ก ๋ชจ๋ํฐ๋ง ํ๋ ์์ํฌ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์ ๊ธฐ์ ์ธ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์ํํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ๋ถ์์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
- HTTP ์์ฒญ ์ต์ํ: CSS ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๊ฒฐํฉํ๊ณ , CSS ์คํ๋ผ์ดํธ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๋ธ๋ผ์ฐ์ ์บ์ฑ์ ํ์ฉํ์ฌ HTTP ์์ฒญ ์๋ฅผ ์ค์ ๋๋ค.
- ์ด๋ฏธ์ง ์ต์ ํ: ์ด๋ฏธ์ง๋ฅผ ์์ถํ๊ณ , ์ ์ ํ ์ด๋ฏธ์ง ํ์์ ์ฌ์ฉํ๋ฉฐ, ์ด๋ฏธ์ง๋ฅผ ์ง์ฐ ๋ก๋ฉํ์ฌ ์ต์ ํํฉ๋๋ค.
- ์ค์ํ์ง ์์ ๋ฆฌ์์ค์ ๋ก๋ฉ ์ง์ฐ: ์ด๋ฏธ์ง ๋ฐ ์คํฌ๋ฆฝํธ์ ๊ฐ์ด ์ค์ํ์ง ์์ ๋ฆฌ์์ค์ ๋ก๋ฉ์ ํ์ํ ๋๊น์ง ์ง์ฐ์ํต๋๋ค.
- ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN) ์ฌ์ฉ: CDN์ ์ฌ์ฉํ์ฌ ์ง๋ฆฌ์ ์ผ๋ก ์ฌ์ฉ์์๊ฒ ๋ ๊ฐ๊น์ด ์๋ฒ์์ ์ฝํ ์ธ ๋ฅผ ๋ฐฐํฌํฉ๋๋ค.
- DOM ์กฐ์ ์ต์ํ: DOM ์กฐ์์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ด ๋ ์ ์์ผ๋ฏ๋ก ์ต์ํํฉ๋๋ค.
- ํจ์จ์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ ์ฌ์ฉ: ๋ถํ์ํ ๋ฃจํ๋ฅผ ํผํ๊ณ , ์ต์ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ต์ํํ์ฌ ํจ์จ์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ ํ๋กํ์ผ๋ง: ํ๋กํ์ผ๋ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํฉ๋๋ค.
- ํ์ฌ ์คํฌ๋ฆฝํธ ๋ชจ๋ํฐ๋ง: ํ์ฌ ์คํฌ๋ฆฝํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ์๋นํ ์ํฅ์ ๋ฏธ์น ์ ์์ผ๋ฏ๋ก ์ฑ๋ฅ์ ๋ชจ๋ํฐ๋งํฉ๋๋ค.
- ์ฝ๋ ๋ถํ ๊ตฌํ: ํฐ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค์ ํ์์ ๋ฐ๋ผ ๋ก๋ํ ์ ์๋ ์์ ์ฒญํฌ๋ก ๋๋๋๋ค.
- ์น ์์ปค ์ฌ์ฉ: ๊ณ์ฐ ์ง์ฝ์ ์ธ ์์ ์ ์น ์์ปค์ ์คํ๋ก๋ํ์ฌ ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ์ง ์๋๋ก ํฉ๋๋ค.
- ๋ชจ๋ฐ์ผ ์ต์ ํ: ๋ฐ์ํ ๋์์ธ์ ์ฌ์ฉํ๊ณ , ์ด๋ฏธ์ง๋ฅผ ์ต์ ํํ๋ฉฐ, ์๋ฐ์คํฌ๋ฆฝํธ ์ฌ์ฉ์ ์ต์ํํ์ฌ ๋ชจ๋ฐ์ผ ์ฅ์น์ ๋ง๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํํฉ๋๋ค.
๊ฒฐ๋ก
๊ฒฌ๊ณ ํ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ๋ถ์ ์ธํ๋ผ๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ์ํํ๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ํต์ฌ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ๋ชจ๋ํฐ๋งํ๊ณ , ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ฉฐ, ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ ์์ฐ์ ์ต์ ํํจ์ผ๋ก์จ ์กฐ์ง์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํค๊ณ ๋ ๋์ ๋น์ฆ๋์ค ์ฑ๊ณผ๋ฅผ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ์ ์ค๊ณ๋ ๋ชจ๋ํฐ๋ง ํ๋ ์์ํฌ๋ ์ด ์ธํ๋ผ์ ์ค์ํ ๊ตฌ์ฑ ์์๋ก์, ์ฑ๋ฅ ๋ฐ์ดํฐ๋ฅผ ์์ง, ์ฒ๋ฆฌ ๋ฐ ์๊ฐํํ๊ธฐ ์ํ ์ค์ ์ง์ค์ ํ๋ซํผ์ ์ ๊ณตํฉ๋๋ค. ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ์ค๋ช ๋ ๋จ๊ณ์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉด ์กฐ์ง์ ํน์ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๋ ํฌ๊ด์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ๋ถ์ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค.